/**
 * 用户信息接口
 */
export interface UserInfo {
  /** 用户ID */
  id: number;
  /** 用户名 */
  username: string;
  /** 昵称 */
  nickname: string;
  /** 头像URL */
  avatar: string;
  /** 当前等级 */
  level: number;
  /** 当前经验值 */
  experience: number;
  /** 当前积分 */
  points: number;
  /** 累计总积分 */
  totalPoints: number;
  /** 手机号 */
  mobile: string;
}

/**
 * 等级信息接口
 */
export interface LevelInfo {
  /** 当前等级数值 */
  currentLevel: number;
  /** 当前等级名称 */
  currentLevelName: string;
  /** 当前等级描述 */
  currentLevelDescription: string;
  /** 当前等级图标URL */
  currentLevelIconUrl: string;
  /** 下一等级名称 */
  nextLevelName: string;
  /** 下一等级所需经验值 */
  nextLevelExperience: number;
  /** 当前等级所需经验值 */
  currentLevelExperience: number;
  /** 是否已达到最高等级 */
  isMaxLevel: boolean;
    /** 当前经验值 */
  experience: number;
}

/**
 * 加速卡信息接口
 */
export interface SpeedCardInfo {
  /** 加速卡ID */
  id: number;
  /** 加速卡名称 */
  name: string;
  /** 加速卡描述 */
  description: string;
  /** 速度倍数 */
  speedMultiplier: number;
  /** 总数量 */
  quantity: number;
  /** 已使用数量 */
  usedQuantity: number;
  /** 可用数量 */
  availableQuantity: number;
  /** 过期时间 */
  expiryTime: Date;
  /** 图标URL */
  iconUrl: string;
}

/**
 * 积分信息接口
 */
export interface PointsInfo {
  /** 当前积分 */
  currentPoints: number;
  /** 累计总积分 */
  totalPoints: number;
  /** 当前等级 */
  level: number;
  /** 当前经验值 */
  experience: number;
}

/**
 * 经验类型统计接口
 */
export interface ExperienceByType {
  /** 签到获得的经验 */
  signIn: number;
  /** 任务完成获得的经验 */
  task: number;
  /** 等级升级奖励经验 */
  levelUpReward: number;
  /** 活动获得的经验 */
  activity: number;
}

/**
 * 经验详细分类接口
 */
export interface ExperienceBreakdown {
  /** 签到获得的经验 */
  signIn: number;
  /** 训练获得的经验 */
  training: number;
  /** 辩论获得的经验 */
  debate: number;
  /** 等级升级奖励经验 */
  levelUpReward: number;
  /** 其他方式获得的经验 */
  other: number;
}

/**
 * 经验统计信息接口
 */
export interface ExperienceStats {
  /** 总经验值 */
  totalExperience: number;
  /** 计算出的总经验值 */
  calculatedTotalExperience: number;
  /** 按类型分类的经验统计 */
  experienceByType: ExperienceByType;
  /** 经验详细分解统计 */
  experienceBreakdown: ExperienceBreakdown;
}

/**
 * 体力信息接口
 */
export interface StaminaInfo {
  /** 当前体力值 */
  currentStamina: number;
  /** 最大体力值 */
  maxStamina: number;
  /** 下次恢复时间 */
  nextRecoveryTime: Date;
  /** 是否正在恢复中 */
  isRecovering: boolean;
  /** 恢复速率(每分钟恢复的体力) */
  recoveryRate: number;
}

/**
 * 未领取奖励接口
 */
export interface UnclaimedReward {
  /** 奖励记录ID */
  id: number;
  /** 起始等级 */
  fromLevel: number;
  /** 目标等级 */
  toLevel: number;
  /** 奖励经验值 */
  rewardExperience: number;
  /** 奖励详情描述 */
  rewardDetails: string;
  /** 等级名称 */
  levelName: string;
  /** 升级时间 */
  upgradeTime: Date;
  /** 升级描述 */
  upgradeDescription: string;
}

/**
 * 用户工具接口
 */
export interface UserTool {
  /** 工具ID */
  id: number;
  /** 工具名称 */
  name: string;
  /** 工具标识符 */
  identifier: string;
  /** 工具描述 */
  description: string;
  /** 工具图标 */
  icon: string;
  /** 工具版本 */
  version: string;
  /** 工具标签 */
  tags: string[];
  /** 是否收藏 */
  isFavorite: boolean;
  /** 评分 */
  rating: number;
  /** 创建时间 */
  createTime: Date;
  /** 训练类型 */
  trainingType: string;
  /** 训练内容 */
  trainingContent: string;
}

/**
 * 个人信息完整接口（getPersonalInfo 接口返回数据）
 */
export interface PersonalInfoResponse {
  /** 用户基本信息 */
  userInfo: UserInfo;
  /** 等级相关信息 */
  levelInfo: LevelInfo;
  /** 用户拥有的加速卡列表 */
  speedCards: SpeedCardInfo[];
  /** 积分相关信息 */
  pointsInfo: PointsInfo;
  /** 经验统计信息 */
  experienceStats: ExperienceStats;
  /** 体力相关信息 */
  staminaInfo: StaminaInfo;
  /** 未领取的奖励列表 */
  unclaimedRewards: UnclaimedReward[];
  /** 用户拥有的工具列表 */
  userTools: UserTool[];
}

/**
 * API 通用响应接口
 */
export interface ApiResponse<T = any> {
  /** 响应状态码 */
  code: number;
  /** 响应消息 */
  message: string;
  /** 响应数据 */
  data?: T;
}

/**
 * 个人信息 API 响应接口
 */
export type PersonalInfoApiResponse = ApiResponse<PersonalInfoResponse>;

/**
 * 系统配置接口
 */
export interface SystemConfigResponse {
  /** 动态配置项，键值对形式 */
  [key: string]: any;
}

/**
 * 训练内容信息接口
 */
export interface TrainingContentInfo {
  /** 训练内容ID */
  id: number;
  /** 训练内容名称 */
  name: string;
  /** 训练内容描述 */
  description: string;
  /** 排序值 */
  sort: number;
  /** 状态 */
  status: number;
}

/**
 * 训练项目信息接口
 */
export interface TrainingProjectInfo {
  /** 项目ID */
  id: number;
  /** 项目名称 */
  name: string;
  /** 项目标识符 */
  identifier: string;
  /** 项目描述 */
  description: string;
  /** 项目图标 */
  icon: string;
  /** 训练内容ID */
  trainingContentId: number;
  /** 训练内容信息 */
  trainingContent: any;
  /** 训练类型信息 */
  trainingType: any;
  /** 用户得分 */
  userScore: number;
  /** 当前等级 */
  currentLevel: number;
  /** 当前等级名称 */
  currentLevelName: string;
  /** 最高等级 */
  maxLevel: number;
  /** 下一等级所需得分 */
  nextLevelRequiredScore: number;
  /** 是否已解锁 */
  isUnlocked: boolean;
}

/**
 * 首页数据响应接口
 */
export interface HomepageResponse {
  /** 训练内容列表 */
  trainingContents: TrainingContentInfo[];
  /** 训练项目列表 */
  trainingProjects: TrainingProjectInfo[];
  /** 用户总得分 */
  userTotalScore: number;
}

/**
 * 项目基本信息接口
 */
export interface ProjectBasicInfo {
  /** 项目ID */
  id: number;
  /** 项目名称 */
  name: string;
  /** 项目标识符 */
  identifier: string;
  /** 项目描述 */
  description: string;
  /** 项目图标 */
  icon: string;
  /** 项目配置 */
  config: any;
}

/**
 * 用户项目进度信息接口
 */
export interface UserProjectProgress {
  /** 总得分 */
  totalScore: number;
  /** 当前等级 */
  currentLevel: number;
  /** 当前等级名称 */
  currentLevelName: string;
  /** 下一等级所需得分 */
  nextLevelRequiredScore: number;
  /** 当前等级进度百分比 */
  currentLevelProgress: number;
  /** 是否已达到最高等级 */
  isMaxLevel: boolean;
}

/**
 * 今日项目进度信息接口
 */
export interface TodayProjectProgress {
  /** 今日得分 */
  todayScore: number;
  /** 提交次数 */
  submissionCount: number;
  /** 每日限制次数 */
  dailyLimit: number;
  /** 是否可以继续提交 */
  canSubmitMore: boolean;
  /** 剩余提交次数 */
  remainingSubmissions: number;
}

/**
 * 最近得分记录接口
 */
export interface RecentScoreRecord {
  /** 记录ID */
  id: number;
  /** 总得分 */
  totalScore: number;
  /** 得分详情 */
  scoreDetails: any;
  /** 提交时间 */
  submitTime: Date;
  /** 批次ID */
  batchId: string;
}

/**
 * 项目详情响应接口
 */
export interface ProjectDetailResponse {
  /** 项目基本信息 */
  projectInfo: ProjectBasicInfo;
  /** 用户项目进度 */
  userProgress: UserProjectProgress;
  /** 今日项目进度 */
  todayProgress: TodayProjectProgress;
  /** 最近得分记录 */
  recentScores: RecentScoreRecord[];
}

/**
 * 经验提交结果接口
 */
export interface ScoreSubmissionResult {
  /** 提交是否成功 */
  success: boolean;
  /** 消息 */
  message: string;
  /** 得分数据 */
  data: {
    /** 总得分 */
    totalScore: number;
    /** 经验倍数 */
    multiplier: number;
    /** 当前体力 */
    currentStamina: number;
    /** 其他相关数据 */
    [key: string]: any;
  };
}

/**
 * 兑换信息接口
 */
export interface ExchangeInfo {
  /** 加速卡名称 */
  speedCardName: string;
  /** 兑换数量 */
  quantity: number;
}

/**
 * 兑换加速卡响应接口
 */
export interface ExchangeSpeedCardResponse {
  /** 响应消息 */
  message: string;
  /** 兑换信息 */
  exchangeInfo: ExchangeInfo;
}

/**
 * 可兑换加速卡信息接口
 */
export interface AvailableSpeedCardInfo {
  /** 加速卡ID */
  id: number;
  /** 加速卡名称 */
  name: string;
  /** 加速卡描述 */
  description: string;
  /** 速度倍数 */
  speedMultiplier: number;
  /** 图标URL */
  iconUrl: string;
}

/**
 * 体力配置接口
 */
export interface StaminaConfig {
  /** 最大体力值 */
  maxStamina: number;
  /** 恢复速率(每分钟恢复的体力) */
  recoveryRate: number;
  /** 每次训练消耗的体力 */
  consumePerTraining: number;
  /** 其他体力相关配置 */
  [key: string]: any;
}

/**
 * 体力信息响应接口
 */
export interface StaminaInfoResponse extends StaminaInfo {
  /** 体力配置信息 */
  config: StaminaConfig;
}

/**
 * 语音文字数据接口
 */
export interface VoiceTextData {
  /** 数据ID */
  id: number;
  /** 数据类型 */
  type: string;
  /** 标题 */
  title: string;
  /** 内容 */
  content: string;
  /** 语音文件URL */
  voiceUrl?: string;
  /** 标签列表 */
  tags: string[];
  /** 状态 */
  status: number;
  /** 创建时间 */
  createTime: Date;
  /** 更新时间 */
  updateTime: Date;
}

/**
 * 奖励信息接口
 */
export interface RewardInfo {
  /** 起始等级 */
  fromLevel: number;
  /** 目标等级 */
  toLevel: number;
  /** 奖励经验值 */
  rewardExperience: number;
  /** 奖励详情描述 */
  rewardDetails: string;
  /** 领取时间 */
  claimTime: Date;
}

/**
 * 领取奖励响应接口
 */
export interface ClaimRewardResponse {
  /** 响应消息 */
  message: string;
  /** 奖励信息 */
  reward: RewardInfo;
}

/**
 * 用户工具列表响应接口
 */
export interface UserToolsResponse {
  /** 工具列表 */
  tools: UserTool[];
  /** 工具总数 */
  total: number;
}

/**
 * 系统配置 API 响应接口
 */
export type SystemConfigApiResponse = ApiResponse<SystemConfigResponse>;

/**
 * 首页数据 API 响应接口
 */
export type HomepageApiResponse = ApiResponse<HomepageResponse>;

/**
 * 项目详情 API 响应接口
 */
export type ProjectDetailApiResponse = ApiResponse<ProjectDetailResponse>;

/**
 * 经验提交 API 响应接口
 */
export type ScoreSubmissionApiResponse = ApiResponse<ScoreSubmissionResult>;

/**
 * 兑换加速卡 API 响应接口
 */
export type ExchangeSpeedCardApiResponse = ApiResponse<ExchangeSpeedCardResponse>;

/**
 * 可兑换加速卡列表 API 响应接口
 */
export type AvailableSpeedCardsApiResponse = ApiResponse<AvailableSpeedCardInfo[]>;

/**
 * 体力信息 API 响应接口
 */
export type StaminaInfoApiResponse = ApiResponse<StaminaInfoResponse>;



/**
 * 领取奖励 API 响应接口
 */
export type ClaimRewardApiResponse = ApiResponse<ClaimRewardResponse>;

/**
 * 用户工具列表 API 响应接口
 */
export type UserToolsApiResponse = ApiResponse<UserToolsResponse>;